// UrlRewriter - A .NET URL Rewriter module
// Version 1.7
//
// Copyright 2006 Intelligencia
// Copyright 2006 Seth Yates
// 

using System;

namespace Intelligencia.UrlRewriter
{
	/// <summary>
	/// Interface for executable actions.
	/// </summary>
	public interface IRewriteAction
	{
		/// <summary>
		/// Executes the action.
		/// </summary>
		/// <remarks>
		/// Note that it is important to set the correct properties on the context
		/// (e.g., StatusCode, Location), rather than directly implementing the action
		/// (e.g., RewritePath).  This allows for the correct pipeline processing of
		/// all the specified rules.
		/// </remarks>
		/// <param name="context">The context to execute the action on.</param>
		void Execute(RewriteContext context);

		/// <summary>
		/// The Processing directive determines how the rewriter should continue
		/// processing after this action has executed.
		/// </summary>
		RewriteProcessing Processing
		{
			get;
		}
	}
}
